//package com.pinyuana.dragongame.activity
//
//import android.annotation.SuppressLint
//import android.content.Intent
//import android.os.Bundle
//import android.os.Handler
//import android.os.Looper
//import android.os.Message
//import android.os.SystemClock
//import android.util.Log
//import android.view.MotionEvent
//import android.view.View
//import android.view.View.OnTouchListener
//import android.view.ViewGroup
//import android.widget.FrameLayout
//import android.widget.ImageView
//import android.widget.TextView
//import com.alibaba.fastjson.JSON
//import com.aliyun.auikits.aiagent.ARTCAICallDepositEngineImpl
//import com.aliyun.auikits.aiagent.ARTCAICallEngine
//import com.android.basemvvm.BaseVMActivity
//import com.android.basemvvm.BaseViewModel
//import com.blankj.utilcode.util.LogUtils
//import com.blankj.utilcode.util.ToastUtils
//import com.cardetective.shopcar.R
//import com.cardetective.shopcar.databinding.ActivitySplashBinding
//import com.cardetective.shopcar.page.activity.SplashViewModel
//import com.permissionx.guolindev.PermissionX
//import com.pinyuana.dragongame.network.model.GenerateAiAgentCallModel
//import com.pinyuana.dragongame.utils.PermissionUtils
//
///**
// * 启动页
// */
//@SuppressLint("CustomSplashScreen")
//class SplashActivity : BaseVMActivity<SplashViewModel, ActivitySplashBinding>() {
//    var mARTCAICallEngine: ARTCAICallEngine? = null
//
//    companion object {
//        val userId: String = "mock_user_id001"
//    }
//
//    override fun initView(savedInstanceState: Bundle?) {
//        PermissionX.init(this)
//            .permissions(PermissionUtils.getPermissions())
//            .request({ allGranted, grantedList, deniedList ->
//                if (!allGranted) {
//                    ToastUtils.showShort("请开通权限后重试")
////                    finish()
//                } else {
////                    onAllPermissionGranted()
//                }
//            })
//        initListener()
//        initView()
//        initEngine()
//        initCallback()
//
//        initPushToTalkButton()
//    }
//
//    override fun initData() {
//
//    }
//
//    private fun initListener() {
//        viewModel.setBVOnExceptionListener(object : BaseViewModel.BVOnExceptionListener {
//            override fun onListener(code: Int, message: String) {
//                when (code) {
//                    200 -> {
//                        try {
//                            LogUtils.d("Received message: $message") // 添加日志查看原始数据
//                            val parseObject =
//                                JSON.parseObject(message, GenerateAiAgentCallModel::class.java)
//                            mARTCAICallEngine?.call(
//                                parseObject.rtc_auth_token,
//                                parseObject.ai_agent_instance_id,
//                                parseObject.ai_agent_user_id,
//                                parseObject.channel_id
//                            )
//                        } catch (e: Exception) {
//                            LogUtils.e("JSON parsing error: ${e.message}")
//                            LogUtils.e("Raw message content: $message") // 添加错误日志
//                            ToastUtils.showShort("数据解析错误")
//                        }
//                    }
//
//                    else -> {
//                        ToastUtils.showShort(message)
//                    }
//                }
//            }
//        })
//    }
//
//    private fun initView() {
//        val tv_btn_start = findViewById<TextView>(R.id.tv_btn_start)
//        val tv_btn_end = findViewById<TextView>(R.id.tv_btn_end)
//        tv_btn_start.setOnClickListener {
//            viewModel.getGenerateAiAgentCall()
//        }
//
//        tv_btn_end.setOnClickListener {
//            mARTCAICallEngine?.handup()
//        }
//    }
//
//    private fun initEngine() {
//        mARTCAICallEngine = ARTCAICallDepositEngineImpl(this, userId)
//        // 设置engine的启动参数
//        val artcaiCallConfig = ARTCAICallEngine.ARTCAICallConfig()
//        // 如果有临时的智能体ID，可以配置
////        artcaiCallConfig.mAiCallAgentTemplateConfig.aiAgentId = "305f5824fb4c4a13b6b95cee5657a64d"
////        artcaiCallConfig.mAiCallAgentTemplateConfig.loginAuthrization = "mock_authorization"
////        artcaiCallConfig.mAiCallAgentTemplateConfig.loginUserId = "mock_user_id"
////        artcaiCallConfig.mAiCallAgentTemplateConfig.enableIntelligentSegment = true
////        artcaiCallConfig.mAiCallAgentTemplateConfig.enablePushToTalk = false
////        artcaiCallConfig.mAiCallAgentTemplateConfig.enableVoicePrint = true
////        artcaiCallConfig.mAiCallAgentTemplateConfig.enableVoiceInterrupt = true
////        artcaiCallConfig.mAiCallAgentTemplateConfig.isSharedAgent = false
////        artcaiCallConfig.mAiCallAgentTemplateConfig.voiceprintId = "mock_user_id"
//        mARTCAICallEngine?.init(artcaiCallConfig)
//
//        // 指定智能体的类型：纯语音、数字人、视觉理解
//        val aiAgentType = ARTCAICallEngine.ARTCAICallAgentType.AvatarAgent
//        mARTCAICallEngine?.setAICallAgentType(aiAgentType)
//
//        // 如果是数字人类型，则需要配置数字人显示的视图容器
//        if (aiAgentType == ARTCAICallEngine.ARTCAICallAgentType.AvatarAgent) {
//            val avatarLayer: ViewGroup? = null
//            mARTCAICallEngine?.setAvatarAgentView(
//                avatarLayer,
//                ViewGroup.LayoutParams(
//                    ViewGroup.LayoutParams.MATCH_PARENT,
//                    ViewGroup.LayoutParams.MATCH_PARENT
//                )
//            )
//        }
//        // 如果是视觉理解类型，则需要配置本地视频预览显示的视图容器
//        else if (aiAgentType == ARTCAICallEngine.ARTCAICallAgentType.VisionAgent) {
//            val previewLayer: ViewGroup? = null
//            mARTCAICallEngine?.setVisionPreviewView(
//                previewLayer,
//                FrameLayout.LayoutParams(
//                    ViewGroup.LayoutParams.MATCH_PARENT,
//                    ViewGroup.LayoutParams.MATCH_PARENT
//                )
//            )
//        }
//    }
//
//
//    protected fun initPushToTalkButton() {
//        val llPushToTalk: ViewGroup = findViewById<ViewGroup>(R.id.btn_push_to_talk)
//
//        llPushToTalk.setOnTouchListener(object : OnTouchListener {
//            val MSG_AUTO_FINISH_PUSH_TO_TALK: Int = 8888
//            val AUTO_FINISH_PUSH_TO_TALK_TIME: Int = 60000
//            var startTalkMillis: Long = 0
//            var uiHandler: Handler = object : Handler(Looper.getMainLooper()) {
//                override fun handleMessage(msg: Message) {
//                    super.handleMessage(msg)
//
//                    if (msg.what == MSG_AUTO_FINISH_PUSH_TO_TALK) {
//                        Log.i("initPushToTalkButton", "MSG_AUTO_FINISH_PUSH_TO_TALK")
//                        onFinishTalk(true)
//                    }
//                }
//            }
//
//            override fun onTouch(v: View, event: MotionEvent): Boolean {
//                Log.i("initPushToTalkButton", "onTouch: " + event.action)
//                if (event.action == MotionEvent.ACTION_DOWN) {
//                    onStartTalk()
//                } else if (event.action == MotionEvent.ACTION_UP) {
//                    onFinishTalk(false)
//                }
//                return true
//            }
//
//            private fun onStartTalk() {
//                Log.i("initPushToTalkButton", "onStartTalk")
//                if (null != mARTCAICallEngine) {
//                    mARTCAICallEngine!!.startPushToTalk()
//                    startTalkMillis = SystemClock.uptimeMillis()
//                    uiHandler.sendEmptyMessageDelayed(
//                        MSG_AUTO_FINISH_PUSH_TO_TALK,
//                        AUTO_FINISH_PUSH_TO_TALK_TIME.toLong()
//                    )
//
//                    val ivPushToTalk: ImageView = findViewById<ImageView>(R.id.iv_push_to_talk)
//                    val tvPushToTalk: TextView = findViewById<TextView>(R.id.tv_push_to_talk)
//                    ivPushToTalk.setImageResource(R.mipmap.ic_microphone_speaking)
//                    tvPushToTalk.setText("松开发送")
//                }
//            }
//
//            private fun onFinishTalk(auto: Boolean) {
//                Log.i("initPushToTalkButton", "onFinishTalk")
//                if (null != mARTCAICallEngine && startTalkMillis != 0L) {
//                    val talkTime = SystemClock.uptimeMillis() - startTalkMillis
//                    startTalkMillis = 0
//                    if (talkTime > 500) { // 大于500ms才会发送
//                        mARTCAICallEngine!!.finishPushToTalk()
//                    } else {
//                        mARTCAICallEngine!!.cancelPushToTalk()
//                    }
//
//                    val ivPushToTalk: ImageView = findViewById<ImageView>(R.id.iv_push_to_talk)
//                    val tvPushToTalk: TextView = findViewById<TextView>(R.id.tv_push_to_talk)
//                    ivPushToTalk.setImageResource(R.mipmap.ic_microphone_idle)
//                    tvPushToTalk.setText("按住说话")
//                }
//                if (!auto) {
//                    uiHandler.removeMessages(MSG_AUTO_FINISH_PUSH_TO_TALK)
//                }
//            }
//        })
//    }
//
//    private fun initCallback() {
//        mARTCAICallEngine?.setEngineCallback(object : ARTCAICallEngine.IARTCAICallEngineCallback() {
//            override fun onErrorOccurs(errorCode: ARTCAICallEngine.AICallErrorCode) {
//                // 发生了错误，记录日志
//                LogUtils.e("AI通话错误: $errorCode")
//                mARTCAICallEngine?.handup()
//            }
//
//            override fun onCallBegin() {
//                // 通话开始（入会）
//                LogUtils.e("开始入会")
//
//                // 检查音频状态
////                mARTCAICallEngine?.enableSpeaker(true)  // 打开扬声器
////                mARTCAICallEngine?.setAudioVolume(100)  // 设置音量
//            }
//
//            override fun onCallEnd() {
//                // 通话结束（离会）
//                LogUtils.e("开始离会")
//            }
//
//            override fun onAICallEngineRobotStateChanged(
//                oldRobotState: ARTCAICallEngine.ARTCAICallRobotState,
//                newRobotState: ARTCAICallEngine.ARTCAICallRobotState
//            ) {
//                // 机器人状态同步
//                LogUtils.e("开始离会")
//            }
//
//            override fun onUserSpeaking(isSpeaking: Boolean) {
//                // 用户说话回调
//                LogUtils.e("用户说话回调")
//            }
//
//            override fun onUserAsrSubtitleNotify(
//                text: String,
//                isSentenceEnd: Boolean,
//                sentenceId: Int
//            ) {
//                // 同步ASR识别用户的话
//                LogUtils.e("同步ASR识别用户的话", text)
//            }
//
//            override fun onAIAgentSubtitleNotify(
//                text: String,
//                end: Boolean,
//                userAsrSentenceId: Int
//            ) {
//                // 同步智能体回应的话
//                LogUtils.e("同步智能体回应的话", text)
//            }
//
//            override fun onNetworkStatusChanged(
//                uid: String,
//                quality: ARTCAICallEngine.ARTCAICallNetworkQuality
//            ) {
//                // 网络状态回调
//                LogUtils.e("网络状态回调")
//            }
//
//            override fun onVoiceVolumeChanged(uid: String, volume: Int) {
//                // 音量变化
//                LogUtils.e("音量变化")
//            }
//
//            override fun onVoiceIdChanged(voiceId: String) {
//                // 当前通话的音色发生了改变
//                LogUtils.e("当前通话的音色发生了改变")
//            }
//
//            override fun onVoiceInterrupted(enable: Boolean) {
//                // 当前通话的语音打断设置改变
//                LogUtils.e("当前通话的语音打断设置改变")
//            }
//
//            override fun onAgentVideoAvailable(available: Boolean) {
//                // 智能体视频是否可用（推流）
//                LogUtils.e("智能体视频是否可用")
//            }
//
//            override fun onAgentAudioAvailable(available: Boolean) {
//                // 智能体音频是否可用（推流）
//                LogUtils.e("智能体音频是否可用")
//            }
//
//            override fun onAgentAvatarFirstFrameDrawn() {
//                // 数字人首视频帧渲染
//                LogUtils.e("数字人首视频帧渲染")
//            }
//
//            override fun onUserOnLine(uid: String) {
//                // 用户上线回调
//                LogUtils.e("用户上线回调")
//            }
//        })
//    }
//
//}
